import Currency from "currency.js";

let that
Page({

    /**
     * 页面的初始数据
     */
    data: {
        carList: [],
        carTotalPrice:0,
        checkAll:false
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        that = this
    },
    onShow: function () {
        that.getList()
    },
    /**
     * 获取购物车
     */
    getList() {
        let carList = wx.getStorageSync("carList") || []
        that.setData({carList})
        that.getCarTotalPrice(carList)

    },
    /**
     * 删除产品
     * @param e
     */
    deleteProduct(e) {
        wx.showModal({
            title: '确定将该商品删除？',
            cancelText: '我再想想',
            cancelColor: '#999999',
            confirmText: '删除',
            confirmColor: '#D81E06',
            success(res) {// 当用户点击模态框中的确认按钮时，触发该函数
                if (res.confirm) {// 如果用户确认执行操作
                    const {index} = e.currentTarget.dataset;// 获取用户点击的商品在列表中的索引
                    let carList = that.data.carList// 获取当前购物车列表
                    carList.splice(index, 1);// 从购物车列表中删除用户点击的商品
                    that.getCarTotalPrice(carList)// 重新计算购物车总价
                }
            }
        })
    },
    /**
     * 步进器值
     * @param e//@param 表示参数，而 e 是参数的名字，代表事件对象。
     */
    // countOnChange函数用于处理购物车中商品数量的变化
    countOnChange(e) {// countOnChange函数用于处理购物车中商品数量的变化
        let index= e.currentTarget.dataset.index// 从事件对象中获取当前商品的索引
        let count = e.detail// 获取用户改变后的商品数量
        let carList = that.data.carList// 获取购物车列表数据
        carList[index]['count'] = count// 更新当前商品在购物车列表中的数量
        carList[index]['totalPrice'] = Currency(carList[index]['price']).multiply(count).value// 计算当前商品的总价，并更新购物车列表中该商品的总价
        that.getCarTotalPrice(carList) // 调用函数重新计算购物车的总价和更新购物车列表
    },
    /**
     * 获取购物车总金额
     */
    getCarTotalPrice(carList){// 计算购物车中选中商品的总价
        let carTotalPrice = 0;// 初始化购物车总价为0
        let checkAll = true// 初始化全选状态为true,一开始就不会显示全选
        carList.forEach(item => {// 遍历购物车列表中的每个商品
            if(item['check']){// 如果当前商品被选中
                carTotalPrice += item["totalPrice"]// 将当前商品价格加入到购物车总价中
            }
            if(checkAll && !item['check']){// 如果存在未被选中的商品，则全选状态为false
                checkAll = false
            }
        })
        wx.setStorageSync("carList", carList) // 将更新后的购物车列表存储到本地缓存中
        carTotalPrice = Currency(carTotalPrice).multiply(100).value // 将购物车总价乘以100（以满足货币格式要求），并更新到页面数据中，乘以100目的是将金额转换为以分为单位的整数形式
        that.setData({carTotalPrice:carTotalPrice,carList,checkAll})
    },
    /** 提交订单 */
    onSubmit(){
        wx.showToast({
            title: '已提交',
            icon: 'none'
        })
    },
    /** 单选 */
    checkChange(e){// 当用户点击某个购物车商品的选择框时，触发该函数
        let index= e.currentTarget.dataset.index// 获取用户点击的商品在列表中的索引
        let check = !e.detail// 获取当前商品的选择状态
        let carList = that.data.carList// 获取当前购物车列表
        carList[index]['check'] = !check// 将当前商品的选择状态取反
        that.getCarTotalPrice(carList)// 重新计算购物车总价
    },
    /** 全选 */
    checkAllChange(){// 当用户点击全选按钮时，触发该函数
        let checkAll = !that.data.checkAll// 获取当前全选按钮的状态
        console.log(checkAll)
        let carList = that.data.carList// 获取当前购物车列表
        carList.forEach(item => {// 遍历购物车列表中的所有商品，将它们的选择状态设置为全选按钮的状态
            item['check'] =  checkAll
        })
        that.setData({checkAll:checkAll},()=>{// 更新全选按钮的状态
            that.getCarTotalPrice(carList)// 重新计算购物车总价
        })
    }


})